The present invention relates to a method for converting N-bit image data of a digital image into M-bit image data, in which Nxe2x88x92M=K, K greater than 0. More particularly, the present method is applied to a dithering process for computer graphics or image processing to solve the image deviation problem.
Converting images from high precision into low precision is commonly used in computer graphics and image processing. As known, a processor is capable of processing an image with high precision data, a storage or display unit cooperating therewith, however, may be limited in low precision. This is because an image processor is designed to support various display standards, e.g., 24-bit true color format, and 16-bit high color format. Thus, it is often desirable to convert 24-bit data generated by the image processor to 16-bit data suitable for storing and/or displaying.
The 24-bit true color format takes 8-bit for representing the red color, 8-bit for representing the green color, and 8-bit for representing the blue color. On the other hand, the 16-bit high color format takes 5-bit, 6-bit and 5-bit for representing the red, green and blue colors, correspondingly. Therefore, when a pixel with true color format is converted into that with high color format, it needs to perform 8-to-5 and 8-to-6 conversions, as shown in FIG. 1.
Conventionally, truncation and rounding methods are used for such conversions. Simple truncation and rounding, however, are undesirable due to Mach banding effects that are introduced into the final image. Regarding the Mach banding effect, an intensity gap occurs at any edge where there is discontinuity in magnitude or slope of intensity, and it is exaggerated by the human eye. To avoid the Mach banding effect, a dithering process is developed to exploit spatial integration in the eye. In the dithering operation, a dither value from a dither matrix is combined with a color value prior to truncation. The dither value varies with pixel location in the image. FIGS. 2Axcx9c2C shows three examples of dither matrices or dither tables for 2-bit, 3-bit and 4-bit down conversions from m bits, respectively, in which i and j indicates the x- and y-coordinates of the pixel, and i=(x mod m), j=(y mod m).
By the use of the dither tables, random values are added to pixel intensities to break up contours, which are referred to as dither noise. Various algorithms have been used to generate the random distributions of the dither tables. By adding the dither noise over an entire picture, the intensity boundaries can be softened.
Please refer to FIG. 3 which is a schematic functional block diagram of a conventional dithering process for 8-to-5 conversion of a pixel, as applied to the red color conversion from a true color format to a high color format. First of all, the coordinate data of the pixel, i.e. x and y, are entered the functional block 31 to correspond to a value in the dither table D3 of FIG. 2B to determine a threshold value T. In the functional block 32, the threshold value T is compared with a value of the least significant 3 bits R[2:0] of the 8-bit color value R[7:0] of the pixel to realize a carry value. When the 3-bit color value R[2:0] is greater than the threshold value T, the carry value is 1, and the most significant 5 bits R[7:3] of the 8-bit color value of the pixel is added thereto the carry value 1 in the functional block 33 to form a temporary value denoted as Tmp[5:0]. On the contrary, when the 3-bit color value R[2:0] is less than or equal to the threshold value T, the most significant 5 bits R[7:3] of the 8-bit color value of the pixel is added thereto the carry value 0. That is, the temporary value Tmp[5:0] is equal to the unchanged most significant 5 bits R[7:3]. The temporary value Tmp[5:0] is further processed by a clamp operation in the functional block 34 to convert the temporary value Tmp[5:0] into the desired 5-bit color value Rxe2x80x2[4:0] of the pixel. For the clamp operation, if the value of Tmp[5:0] is greater than 31, the dithered value Rxe2x80x2[4:0] is set to be 31. Otherwise, the dithered value Rxe2x80x2[4:0] is equal to the value of Tmp[5:0]. It is to be noted that Tmp[5:0] instead of Tmp[4:0] is used herein because the temporary value may overflow after the addition of the carry value.
FIG. 4 shows how the conventional dithering process similar to FIG. 3 performs 8-to-6 conversion of a pixel, as applied to the green color conversion from a true color format to a high color format. First of all, the coordinate data of the pixel, i.e. x and y, are entered the funvtional block 41 to correspond to a value in the dither table D2 of FIG. 2A to determine a threshold value T. The threshold value T is compared with a value of the least significant 2 bits G[1:0] of the 8-bit color value G[7:0] of the pixel in the functional block 42. When the 2-bit color value G[1:0] is greater than the threshold value T, the most significant 6 bits G[7:2] of the 8-bit color value of the pixel is added thereto a carry value of 1 in the functional block 43 to form a temporary value denoted as Tmp[6:0]. On the contrary, when the 2-bit color value G[1:0] is less than or equal to the threshold value T, the most significant 6 bits G[7:2] of the 8-bit color value of the pixel is added thereto a carry value of 0. That is, the temporary value Tmp[6:0] is equal to the unchanged most significant 6 bits G[7:2]. The temporary value Tmp[6:0] is further processed by a clamp operation in the functional block 44 to convert the temporary value Tmp[6:0] into the desired 6-bit color value Gxe2x80x2[5:0] of the pixel. For the clamp operation, if the value of Tmp[6:0] is greater than 63, the dithered value Gxe2x80x2[5:0] is set to be 63. Otherwise, the dithered value Gxe2x80x2[5:0] is equal to the value of Tmp[6:0]. It is to be noted that Tmp[6:0] instead of Tmp[5:0] is used herein because the temporary value may overflow after the addition of the carry value.
On the contrary to the conversion illustrated with reference to FIG. 3 or 4, an inverse dithering operation is typically used for converting the image from the high color format to the true color format. A typical inverse dithering operation is to append several the most significant bits as illustrated in the functional block 51 or 52 of FIG. 5A or 5B. In FIG. 5A, the recovery value Rxe2x80x3[7:0] is obtained by using the 5-bit color value Rxe2x80x2[4:0] as the most significant 5 bits Rxe2x80x3[7:3], and complementing the color value Rxe2x80x3[7:0] by adding the most significant 3 bits Rxe2x80x2[4:2] as the least significant 3 bits Rxe2x80x3[2:0]. Likewise, in FIG. 5B, the recovery value Gxe2x80x3[7:0] is obtained by using the 6-bit color value Gxe2x80x2[5:0] as the most significant 6 bits Gxe2x80x3[7:2], and complementing the color value Gxe2x80x3[7:0] by adding the most significant 2 bits Gxe2x80x2[5:4] as the least significant 2 bits Gxe2x80x3[1:0].
The dithering method mentioned above achieves better visual quality than directly truncation for precision conversion. However, for computer graphics applications, a dithered image needs to be inversely dithered for further processing and then dithered again. A conventional inversely dithering method is to append the most significant bits into the dithered value for low to high precision conversion. Unfortunately, after repeating the dithering and inversely dithering processes several times, some points of the resulting image appear to become too red, too green or too blue. That is, a color deviation problem occurs.
Hereinafter, a color deviation problem caused by the conventional dithering method is illustrated. It is assumed that a pixel at a fixed position is to be dithered and inversely dithered several times, the number of intensity bits of the pixel is N, and the number of dropped bits is n. Due to the fixed position, a fixed threshold value T is derived from a dither table Dn. The original intensity of the pixel is I0, the intensity of the pixel having been dithered k times is Ik, and the dithered value of the pixel after k times is Vk. Let Hk be the value of the most significant n bits of Ik, namely, Hk=└Ik/2Nxe2x88x92n┘. And let Pk be the value of the least significant n bits of Ik, namely, Pk=Ik mod 2n.
From the conventional inverse dithering method, Ik=Vk*8+Hk, that means, Pk=Hk. In the first dithering process, if P0 is greater than T, then V1=V0+1 and I1=V1*8+H1. That is, P1=H1. If P1 is greater than T, then V2=V1+1. It is easily to be proved that Hk is greater than or equal to H1. That means if H1 is greater than T, then Hk is greater than T and Pk is also greater than T. When k increases, Ik will increase, too. Finally, we will find some points with unharmonious colors, and color deviation is thus rendered.
Therefore, an object of the present invention is to provide a method and/or an apparatus for converting N-bit image data of a digital image into M-bit image data (Nxe2x88x92M=K, K greater than 0), by which the color deviation problem can be solved.
A first aspect of the present invention relates to a method for converting N-bit image data to a digital image into M-bit image data in a dithering process, in which Nxe2x88x92M=K, K greater than 0. The method includes steps of: performing a first operation for N-bit image data of a pixel of the digital image to realize a difference between the most significant n bits and the least significant n bits of the N-bit image data; performing a second operation for coordinate data of the pixel to realize a threshold value; comparing an absolute value of the difference with the threshold value; using the most significant M bits of the N-bit image data of the pixel as new image data of the pixel when the absolute value of the difference is no greater than the threshold value; adding a first unit value to the most significant M bits of the N-bit image data of the pixel to serve as new image data of the pixel when the absolute value of the difference is grater than the threshold value, and a sign of the difference value is positive; and subtracting a second unit value from the most significant M bits of the N-bit image data of the pixel to serve as new image data of the pixel when the absolute value of the difference is greater than the threshold value, and the sign of the difference value is negative. In this way, the N-bit image data of the pixel can be converted into M-bit image data.
Preferably, 1xe2x89xa6nxe2x89xa6(N/2), and more preferably, n=K.
Preferably, the first unit value is equal to the second unit value, and each equals one.
Preferably, an additional step of comparing a sum of the most significant M bits of the N-bit image data and the first unit value with a value (2Mxe2x88x921) involved. When the sum is greater than (2Mxe2x88x921), the value (2Mxe2x88x921) rather than the sum is used as new image data of the pixel.
Preferably, another step of comparing a difference of the most significant M bits of the N-bit image data and the second unit value with a value 0 involved. The value 0 rather than the difference will be used as new image data of the pixel if the difference is less than 0.
Preferably, the first operation includes a subtraction operation for to realize the difference. The second operation can be or include a dithering operation conventionally used in the art.
The image data of the pixel to be converted according to the present method can be red, green and blue color values of the pixel, each of which is individually converted by the method. Further, the above steps can be repeated for the other pixels of the digital image so as to complete conversion of the N-bit image data of the entire digital image into the M-bit image data.
A second aspect of the present invention relates to an apparatus for performing a dithering process to convert N-bit image data of a digital image into M-bit image data in which Nxe2x88x92Mxe2x88x92K, K greater than 0. The apparatus includes a subtraction operator for subtracting the most significant n bits of the N-bit image data by least significant n bits of the N-bit image data to obtain a difference; a threshold operator for operating coordinate data of the pixel to obtain a threshold value; a comparing operator electrically connected to the subtraction operator and the threshold operator for comparing the difference with the threshold value, the comparing operator outputting a first control signal when an absolute value of the difference is no greater than the threshold value, a second control signal when the absolute value of the difference is greater than the threshold value, and a sign of the difference value is positive, and a third control signal when the absolute value of the difference is greater than the threshold value, and a sign of the difference value is negative and a computing operator electrically connected to the comparing operator for outputting the most significant M bits of the N-bit image data of the pixel as new image data of the pixel with M bits in response to the first control signal, outputting the most significant M bits plus a first unit value as new image data of the pixel in response to the second control signal, and outputting the most significant M bits minus a second unit value as new image data of the pixel in response to the third control signal. In this way, the N-bit image data of the pixel can be converted into M-bit image data.
Preferably, the apparatus further includes a clamp operator electrically connected to the computing operator. In the clamp operator, the new image data of the pixel is compared with a value (2Mxe2x88x921) and a value 0. If the value of the new image data is greater than the value (2Mxe2x88x921), a first adjusting operation will be performed. On the other hand, if the value of the new image data is less than the value 0, a second adjusting operation will be performed. In a preferred embodiment, the first adjusting operation is to substitute the value (2Mxe2x88x921) for the compared M-bit image data to become new data of the pixel. The second adjusting operation is to substitute the value 0 for the compared M-bit image data to become new image data of the pixel.
Preferably, the threshold operator includes a dither table. The dither table is provided for the threshold operator to convert the coordinate data of the pixel into the threshold value by dithering. A conventional dither table and dithering process can be used herein.